// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.apidb.common;
import org.apache.commons.dbcp.BasicDataSource;
import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
import org.openstreetmap.osmosis.core.database.DatabaseLoginCredentials;
/**
* Produces data sources based on a set of database credentials.
*/
public final class DataSourceFactory {
/**
* This class cannot be instantiated.
*/
private DataSourceFactory() {
}
/**
* Creates a new data source based on the specified credentials.
*
* @param credentials
* The database credentials.
*
* @return The data source.
*/
public static BasicDataSource createDataSource(DatabaseLoginCredentials credentials) {
BasicDataSource dataSource;
dataSource = new BasicDataSource();
switch (credentials.getDbType()) {
case POSTGRESQL:
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://" + credentials.getHost() + "/" + credentials.getDatabase()
/*+ "?loglevel=2"*/);
break;
case MYSQL:
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://" + credentials.getHost() + "/" + credentials.getDatabase());
break;
default:
throw new OsmosisRuntimeException("Unknown database type " + credentials.getDbType() + ".");
}
dataSource.setUsername(credentials.getUser());
dataSource.setPassword(credentials.getPassword());
return dataSource;
}
}